package Thread;

import java.util.concurrent.atomic.AtomicInteger;

public class Demo14 {
    //private static int count=0; 线程不安全
    //此处不再使用int,而是使用原子类

    private static AtomicInteger count=new AtomicInteger(0);
    public static void main(String[] args) throws InterruptedException {
        Thread t1=new Thread(()->{
            for (int i = 0; i < 50000; i++) {
                //count++;
                count.getAndIncrement(); //类似于之前使用的count++;
               // count.incrementAndGet() 类似于之前使用的++count;
                //count.getAndDecrement() 类似于之前使用的count--;
               // count.decrementAndGet() 类似于之前使用的--count;
                //count.addAndGet(n) 类似于之前使用的count+=n
            }
        });
        Thread t2=new Thread(()->{
            for (int i = 0; i < 50000; i++) {
                //count++;
                count.getAndIncrement();
            }
        });
        t1.start();
        t2.start();
        t1.join();
        t2.join();
        System.out.println("count="+count);//因为线程不安全问题所导致的count的值出现了问题，正确值是100000
    }
}
